package com.mwx.baselib.net;




import com.mwx.baselib.bean.ArtistAlbumBean;
import com.mwx.baselib.bean.ArtistSongListBean;
import com.mwx.baselib.bean.HomeBannerBean;
import com.mwx.baselib.bean.LikeBean;
import com.mwx.baselib.bean.LoginBean;
import com.mwx.baselib.bean.MVListBean;
import com.mwx.baselib.bean.PageSongListBean;
import com.mwx.baselib.bean.PlayListBean;
import com.mwx.baselib.bean.PlayListSongBean;
import com.mwx.baselib.bean.RanKingSongListBean;
import com.mwx.baselib.bean.RankingListBean;
import com.mwx.baselib.bean.SceneListBean;
import com.mwx.baselib.bean.SceneSongBean;
import com.mwx.baselib.bean.SingerListBean;
import com.mwx.baselib.bean.SongBean;
import com.mwx.baselib.bean.TagListBean;
import com.mwx.baselib.bean.TagPlayListBean;

import java.lang.reflect.Member;
import java.util.List;
import java.util.Map;

import io.reactivex.Completable;
import io.reactivex.Observable;
import retrofit2.http.Body;
import retrofit2.http.FieldMap;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.Headers;
import retrofit2.http.POST;
import retrofit2.http.Path;
import retrofit2.http.QueryMap;

public interface ApiService {
    /**
     * 首页banner
     * @param map
     * @return
     */

    @GET("/api/banner/get")
    Observable<BaseResponses<List<HomeBannerBean>>> getHomeBanner(@QueryMap Map<String, String> map);


    /**
     * 登录
     * @param map
     * @return
     */
    @POST("/api/auth/login")
    Observable<BaseResponses<LoginBean>> login(@Body Map<String, String> map);
    /**
     * 歌单列表
     * @param map
     * @return
     */
    @GET("/api/playlist/list")
    Observable<BaseResponses<PlayListBean>> playlist(@QueryMap Map<String, String> map);
    /**
     * 每日推荐歌曲
     * @param map
     * @return
     */
    @GET("/api/song/recommend")
    Observable<BaseResponses<List<SongBean>>> recommend(@QueryMap Map<String, String> map);
    /**
     * 场景列表
     * @param map
     * @return
     */
    @GET("/api/scene/list")
    Observable<BaseResponses<SceneListBean>> sceneList(@QueryMap Map<String, String> map);
    /**
     * 场景歌曲列表
     * @return
     */
    @GET("/api/scene/{id}/song")
    Observable<BaseResponses<List<SceneSongBean>>> sceneSong(@Path("id") int id);
    /**
     * 歌单播放列表
     * @return
     */
    @GET("/api/playlist/{id}/song")
    Observable<BaseResponses<List<PlayListSongBean>>> playListList(@Path("id") int id);
    /**
     * 获取艺人列表
     * @param map
     *
     * @return
     */
    @GET ("/api/artist/list?page=1&size=50")
    Observable<BaseResponses<SingerListBean>>getSongerList(@QueryMap Map<String, String> map);
    /**
     *排行榜列表
     */
    @GET ("/api/ranking/list")
    Observable<BaseResponses<RankingListBean>>rankingList(@QueryMap Map<String, String> map);
    /**
     *歌手歌曲列表
     */
    @GET ("/api/artist/song/list")
    Observable<BaseResponses<ArtistSongListBean>>artistSongList(@QueryMap Map<String, String> map);
    /**
     *歌手专辑列表
     */
    @GET ("/api/artist/get/{id}/album")
    Observable<BaseResponses<ArtistAlbumBean>>artistAlbumList(@Path("id") int id);
    /**
     *歌曲列表
     */
    @GET ("/api/song/list")
    Observable<BaseResponses<PageSongListBean>>getSongList(@QueryMap Map<String, String> map);
    /**
     *歌手MV列表
     */
    @GET ("/api/mv/list")
    Observable<BaseResponses<MVListBean>>getMVList(@QueryMap Map<String, String> map);
    /**
     *我喜欢的歌曲
     */
    @GET ("/api/member/likeList")
    Observable<BaseResponses<PageSongListBean>>likeList(@QueryMap Map<String, String> map);
    /**
     *标签列表
     */
    @GET ("/api/tag/list")
    Observable<BaseResponses<TagListBean>>tagList(@QueryMap Map<String, String> map);
    /**
     *标签歌单列表
     */
    @GET ("/api/tag/21/playList")
    Observable<BaseResponses<List<TagPlayListBean>>>tagPlayList(@QueryMap Map<String, String> map);
    /**
     *标签歌单列表
     */
    @GET ("/api/ranking/{id}/song")
    Observable<BaseResponses<List<RanKingSongListBean>>>rankingSongList(@Path("id") int id);
    /**
     *喜欢 歌曲
     */
    @POST ("/api/like/songLike")
    @FormUrlEncoded
    Observable<BaseResponses<LikeBean>>songLike(@FieldMap Map<String, String> map);

}
